"""
适配器模式（Adapter Pattern）充当两个不兼容接口之间的桥梁，属于结构型设计模式。
它通过一个中间件（适配器）将一个类的接口转换成客户期望的另一个接口，使原本不能一起工作的类能够协同工作。
意图：
    将一个类的接口转换为另一个接口，使得原本不兼容的类可以协同工作。
适用性：
    在软件系统中，需要将现有的对象放入新环境，而新环境要求的接口与现有对象不匹配。
结构：
    目标接口（Target）：定义客户需要的接口。
    适配者类（Adaptee）：定义一个已经存在的接口，这个接口需要适配。
    适配器类（Adapter）：实现目标接口，并通过组合或继承的方式调用适配者类中的方法，从而实现目标接口。
"""


# 适配者类
class OldSystem:
    def specific_request(self):
        return "Old system's specific request"


# 目标接口
class NewSystem:
    def request(self):
        return "New system's request"


# 适配器
class Adapter:
    def __init__(self, new_system):
        self._new_system = new_system

    def specific_request(self):
        return self._new_system.request()


def client(adapter):
    print(adapter.specific_request())


if __name__ == '__main__':
    old_system = OldSystem()
    new_system = NewSystem()
    adapter = Adapter(new_system)
    client(adapter)
